/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package RDA;

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.geom.Shape;
import org.newdawn.slick.state.StateBasedGame;

/**
 *
 * @author Raúl Delgado & Xavi Pol
 */
public abstract class Entidad {

    float x;            //posición X
    float y;            //posición Y
    boolean destruido;  //estado de la entidad
    Shape s;            //figura que representa la entidad

    /**
     * Constructor
     */
    public Entidad(){}

    /**
     * Cambia la posicion de la entidad
     * @param x coordendaX
     * @param y coordenadaY
     */
    public abstract void posicion(float x, float y);

    /**
     * Actualiza la entidad
     * @param gc
     * @param g
     * @param delta
     */
    public abstract void update(GameContainer gc, StateBasedGame sb, int delta);

    /**
     * Dibuja la entidad
     * @param gc 
     * @param g 
     */
    public abstract void render(GameContainer gc, Graphics g);

    /**
     * Metodo que controla el choque entre entidades
     * @param s Shape UnitatEnemiga
     * @return true si col·lisiona
     */
    public boolean choque(Shape s) {
        if (this.s.intersects(s)) {
            return true;
        }
        return false;
    }

    public boolean isDestruido() {
        return destruido;
    }

    public void setDestruido(boolean destruido) {
        this.destruido = destruido;
    }

    public Shape getS() {
        return s;
    }

    public void setS(Shape s) {
        this.s = s;
    }

    public float getX() {
        return x;
    }

    public void setX(float x) {
        this.x = x;
    }

    public float getY() {
        return y;
    }

    public void setY(float y) {
        this.y = y;
    }

    public float getHeight() {
        return s.getHeight();
    }

    public float getWidth() {
        return s.getWidth();
    }

}
